草庐IT

SQL ALTER TABLE 语句

全部标签

java - 以最安全的方式使用准备好的语句

从安全验证的角度来看,两者之间是否有区别:stmt.setObject(1,theObject);和stmt.setString(1,theObject);?我知道在这种情况下theObject是一个String但我有兴趣使这段代码的一部分更通用以涵盖其他情况,并且想知道是否从安全角度考虑输入验证受到影响 最佳答案 可以使用ssetObject(),因为jdbc将尝试为所有java.lang.*类型进行类型解析。但是,以这种方式将任意SQL字符串传递到数据库存在潜在问题-安全漏洞:如果没有对用于构建SQL字符串的任何参数进行非常明智

java - 即使使用 case 语句,SUM 结果值也会重复

我使用posgresql作为数据库,使用java作为带hibernate的编程语言。我的问题是这个查询:selectcast(sum(CASEWHENp.nropack>0THENp.nropackELSE0END)asinteger),cast(sum(CASEWHENp.nropack结果我得到:sum;sum;fechareg30;-15;"2012-11-15"但是当我在我的程序中使用它时:publicArrayListlistarKardex(intciud){ciud=105;ArrayListlistaKardex=newArrayList();Sessionsessio

java - 如何在不使用不同的准备语句的情况下处理 NULL 和常规值?

考虑这个简单的方法:publicResultSetgetByOwnerId(finalConnectionconnection,finalIntegerid)throwsSQLException{PreparedStatementstatement=connection.prepareStatement("SELECT*FROMMyTableWHEREMyColumn=?");statement.setObject(1,id);returnstatement.executeQuery();}示例方法应该从某些表中选择列值匹配的所有内容,这应该很简单。丑陋的细节是,无论数据库中有多少行,

java - Hibernate 多态 HQL SELECT 语句

我正在使用Hibernate注释来持久化我的类。目前我正在使用以下策略来映射类我有一个抽象类,它是父类,我有两个继承自它的子类爸爸妈妈。我是这样映射的:@MappedSuperclasspublicabstractclassParent{privateintage;privateStringname;...}另外两个类是这样声明的:@EntitypublicClassFatherextendsParent{privatebooleanhaveMustash;...}所以基本上场景是“每个类一个表”。现在我想创建一个HibernateHQL语句来更新parent的年龄,无论其类型如何(母

java - 如何在 Java/jtds 应用程序中支持 SQL GO 语句?

我正在开发基于Java的OSS应用SqlHawk它的功能之一是针对服务器运行升级sql脚本。Microsoft已将使用GO将脚本分成多个批处理作为惯例语句,这是个好主意,但只是要求在字符串上进行错误匹配。目前我有一个非常初级的://splitwhereGOonitsownonalinePatternbatchSplitter=Pattern.compile("^GO",Pattern.MULTILINE);...String[]splitSql=batchSplitter.split(definition);...哪种方法有效但容易被quotedGOstatements之类的东西绊倒或

java - 编程实践(一些容易混淆的语句)

前几天,我正在阅读Kernighan和RobPike合着的编程实践。在第二章的搜索部分,我读到了其中的一些内容,这在我的脑海中造成了困惑。“没有什么比数组更适合存储静态表格数据了。编译时初始化使得构建这样的阵列既便宜又容易。(在Java中,初始化发生在运行时,但这是一个不重要的实现细节,除非数组很大。)”我的问题是,如果用户打算仅在运行时提供数组或变量,并且变量的内存分配也在运行时发生,那么在任何语言中如何进行数组或变量的编译时初始化。不知道内存地址如何初始化数组? 最佳答案 它并没有说数据是在运行时提供的。它只是说“静态”数据。如

java复杂语句执行顺序

System.out.println(info+":"+++x);这个语句是否等同于x++;System.out.println(info+":"+x);和System.out.println(info+":"+x++);相当于System.out.println(info+":"+x);x++;JVM一次只能处理一条语句,它是不是这样划分这些语句的? 最佳答案 是的,是的。++x将在包含语句之前执行,即x的值将在使用之前递增。x++将在包含语句之后执行,即使用该值然后变量x递增。需要说明的是:在这两种情况下,变量x的值都会发生变化

java - 准备好的语句和 JDBC 驱动程序

我有以下关于Java中的准备语句的问题。当SQL查询没有任何Where子句时使用准备语句是否有益?假设一个简单的查询Select*fromtablename;据说PreparedStatement编译一次,第二次只代入值。因此它更快,因为可以跳过查询验证和编译步骤。编译后的表格存储在哪里?这个编译形式的生命周期是多少? 最佳答案 当需要传递参数和重复执行查询时,PreparedStatement很有用。如果只触发一个简单的查询,语句会更快。缓存发生在数据库服务器上。数据库服务器具有有助于缓存已编译查询的API。因此,对于重复执行的查

MySQL常用数据库语句

==数据库==1、创建数据库createdatabase[IFNOTEXISTS]数据库名;2、删除数据库dropdatabase[IFEXISTS]数据库名;3、切换数据库selectdatabase();4、查询数据库showdatabases;————————————————————————————==数据表==1、创建数据表createtable表名(  字段名1字段类型1(字段长度)[约束][comment字段1注释],--不是;号  字段名2字段类型2(字段长度)[约束][comment字段2注释],   ....   字段名n字段类型n(字段长度)[约束][comment字段2注

java - 用JavaPoet生成switch语句

我正在研究用Java编写的注解处理器。我正在使用JavaPoet生成一些代码行。我必须生成一个“switch”语句。现在我正在使用以下代码:MethodSpec.BuildermethodBuilder=MethodSpec.methodBuilder("parseOnXml").addAnnotation(Override.class).addModifiers(Modifier.PUBLIC).addParameter(typeName(XmlBinderContext.class),"context").addParameter(typeName(XmlWrapperParser